﻿using System.Collections.Generic;
using CTEM.Models;
using CTEM.Controllers.DAO;
using System;
using CTEM.Controllers.Global;

namespace CTEM.Controllers.BUS
{
    public class PurchaseBookBUS
    {
        private readonly CT_PurchaseBookDAO _purchaseBookDAO = new CT_PurchaseBookDAO();

        #region Business Layer for PurchaseBook Entity
        /// <summary>
        /// 
        /// </summary>
        /// <param name="subconDTO"></param>
        /// <param name="errorMessage"></param>
        /// <param name="fieldName"></param>
        /// <returns></returns>
        public bool ValidatePurchaseBook(CT_PurchaseBookDTO subconDTO, out string errorMessage, out string fieldName)
        {
            if (subconDTO.DebtID == 0)
            {
                errorMessage = "Bạn Chưa Nhập Nhà Cung Cấp";
                fieldName = "DebtID";
                return false;
            }
            else if (subconDTO.Officer.Equals(Constants.EMPTY_TEXT))
            {
                errorMessage = "Bạn Chưa Nhập Tên Người Chiệu Trách Nhiệm";
                fieldName = "Officer";
                return false;
            }
            else if (subconDTO.Officer.Length > 50)
            {
                errorMessage = "Tên Người Chiệu Trách Nhiệm Quá Dài";
                fieldName = "Officer";
                return false;
            }
            else if (subconDTO.VehicleID == 0 && subconDTO.ConstructionID == 0 && subconDTO.WarehouseID == 0)
            {
                errorMessage = "Bạn Chưa Chọn Nơi Mua Hàng Về";
                fieldName = "VehicleID";
                return false;
            }
            
            else if (subconDTO.Contents.Equals(Constants.EMPTY_TEXT) && subconDTO.MaterialID == 0)
            {
                errorMessage = "Bạn Chưa Nhập Nội Dung Mua";
                fieldName = "Contents";
                return false;
            }
            else if (subconDTO.MaterialID != 0 && subconDTO.GroupMaterialID == 0)
            {
                errorMessage = "Bạn Chưa Chọn Nhóm Vất Tư";
                fieldName = "GroupMaterialID";
                return false;
            }
            errorMessage = "";
            fieldName = "";
            return true;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="PurchaseBookDTO"></param>
        /// <returns></returns>
        public long CreatePurchaseBook(CT_PurchaseBookDTO PurchaseBookDTO)
        {
            //PurchaseBookDTO.Name = Global.Global.TitleCase(PurchaseBookDTO.Name);
            //PurchaseBookDTO.Name = Global.Global.RemoveRedundantSpace(PurchaseBookDTO.Name);
            return _purchaseBookDAO.CreatePurchaseBook(PurchaseBookDTO);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="PurchaseBookID"></param>
        /// <returns></returns>
        public bool DeletePurchaseBook(long PurchaseBookID)
        {
            return _purchaseBookDAO.DeletePurchaseBook(PurchaseBookID);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="isactive"></param>
        /// <returns></returns>
        internal List<CT_PurchaseBookDTO> LoadPurchaseBook(bool isactive)
        {
            return _purchaseBookDAO.LoadAllPurchaseBooks();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="PurchaseBookDTO"></param>
        /// <returns></returns>
        internal bool UpdatePurchaseBook(CT_PurchaseBookDTO PurchaseBookDTO)
        {
            PurchaseBookDTO.UpdatedBy = Global.Global.CurrentUser.Username;
            PurchaseBookDTO.LastUpdated = DateTime.Today;
            return _purchaseBookDAO.UpdatePurchaseBook(PurchaseBookDTO);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="PurchaseBookID"></param>
        /// <returns></returns>
        internal CT_PurchaseBookDTO GetPurchaseBookByID(long PurchaseBookID)
        {
            return _purchaseBookDAO.GetPurchaseBookByID(PurchaseBookID);
        }
        #endregion
    }
}
